Học cách mô tả giải pháp bằng các bước rõ ràng, hiểu thứ tự thực hiện lệnh và vẽ sơ đồ để trình bày tư duy một cách trực quan.
Thuật toán là gì?
Thuật toán là một dãy các bước được mô tả rõ ràng, có thứ tự, dùng để giải quyết một vấn đề cụ thể. Thuật toán không chỉ dành cho máy tính — con người cũng dùng thuật toán mỗi ngày mà có thể không nhận ra.
Sơ đồ khối giúp hình dung các bước của thuật toán một cách trực quan
Một thuật toán đúng cần đảm bảo ba điều:
Rõ ràng: mỗi bước dễ hiểu, không gây nhầm lẫn.
Hữu hạn: phải kết thúc sau một số bước nhất định.
Chính xác: cho kết quả đúng với mọi trường hợp hợp lệ.
💡 Ghi nhớ
Thuật toán giống như công thức nấu ăn: liệt kê nguyên liệu (đầu vào), các bước chế biến (xử lý) và món ăn hoàn thành (đầu ra).
Đầu vào, xử lý và đầu ra
Mọi thuật toán đều liên quan đến ba thành phần cơ bản:
Đầu vào (Input)
Dữ liệu ban đầu cần có để bắt đầu. Ví dụ: hai số a và b.
Đầu ra (Output)
Kết quả thu được sau khi xử lý. Ví dụ: tổng a + b.
Phần xử lý nằm giữa: các phép tính, so sánh, quyết định… biến đầu vào thành đầu ra mong muốn.
📌 Ví dụ — Tính điểm trung bình
Đầu vào: điểm Toán = 8, Văn = 7, Anh = 9
Xử lý: TB = (8 + 7 + 9) ÷ 3
Đầu ra: TB = 8
Luồng lệnh là gì?
Luồng lệnh (flow of control) mô tả thứ tự mà các lệnh được thực hiện trong một chương trình hoặc thuật toán. Hiểu luồng lệnh giúp bạn biết máy tính (hoặc người thực hiện) sẽ làm gì trước, làm gì sau.
Có ba dạng luồng lệnh cơ bản:
1. Tuần tự (Sequential)
Các lệnh chạy lần lượt từ trên xuống dưới, không bỏ qua bước nào.
2. Rẽ nhánh (Branching)
Tùy điều kiện đúng hay sai, chương trình chọn một trong hai (hoặc nhiều) nhánh để thực hiện.
3. Lặp (Loop)
Một nhóm lệnh được thực hiện lại nhiều lần cho đến khi đủ số lần hoặc thỏa điều kiện dừng.
Ba cấu trúc điều khiển: tuần tự, rẽ nhánh và lặp
💡 Ghi nhớ
Mọi chương trình phức tạp đều được xây dựng từ ba cấu trúc này. Nắm vững chúng là nền tảng để đọc hiểu mọi thuật toán.
Luồng lệnh tuần tự
Đây là dạng đơn giản nhất: bước 1 xong mới đến bước 2, bước 2 xong mới đến bước 3… Không có nhảy cóc hay quay lại.
📌 Ví dụ — Chuẩn bị đi học
Thức dậy
Đánh răng, rửa mặt
Ăn sáng
Mặc đồng phục
Đi đến trường
Mỗi bước phải hoàn thành trước khi chuyển sang bước tiếp theo.
Bước 1: Nhập a, b
↓
Bước 2: Tính S = a + b
↓
Bước 3: In ra S
↓
Kết thúc
Luồng lệnh rẽ nhánh
Khi gặp điều kiện, thuật toán kiểm tra rồi chọn hướng đi. Cấu trúc phổ biến nhất là nếu – thì – ngược lại (if – then – else).
Sơ đồ rẽ nhánh: nếu điều kiện đúng thì nhánh A, sai thì nhánh B
📌 Ví dụ — Xếp loại học lực
Nếu điểm TB ≥ 8 → Xếp loại Giỏi
Ngược lại, nếu điểm TB ≥ 6.5 → Xếp loại Khá
Ngược lại → Xếp loại Trung bình
Trong Scratch, khối "nếu … thì" chính là rẽ nhánh. Trong sơ đồ khối, rẽ nhánh được biểu diễn bằng hình thoi.
Luồng lệnh lặp
Vòng lặp giúp tránh việc viết lại cùng một nhóm lệnh nhiều lần. Có hai kiểu phổ biến:
Lặp với số lần biết trước: lặp đúng 10 lần, lặp cho mỗi học sinh trong lớp…
Lặp với điều kiện: lặp cho đến khi đoán đúng số, lặp khi còn pin…
Sơ đồ vòng lặp: kiểm tra điều kiện rồi quay lại hoặc thoát
📌 Ví dụ — In bảng cửu chương 5
Lặp i từ 1 đến 10:
In ra "5 × i = kết quả"
Thay vì viết 10 dòng lệnh riêng, chỉ cần một vòng lặp với 10 lần.
💡 Cẩn thận
Vòng lặp phải có điều kiện dừng rõ ràng. Nếu không, chương trình sẽ chạy mãi (vòng lặp vô hạn) và không bao giờ kết thúc.
Sơ đồ khối là gì?
Sơ đồ khối (flowchart) là cách vẽ thuật toán bằng các hình và mũi tên. Mỗi hình đại diện cho một loại thao tác, giúp người đọc nắm luồng xử lý mà không cần đọc code.
Các ký hiệu chuẩn trong sơ đồ khối
Các ký hiệu thường dùng:
⬭
Bầu dục
Bắt đầu / Kết thúc
▭
Hình chữ nhật
Thao tác, tính toán
◇
Hình thoi
Điều kiện, quyết định
▱
Hình bình hành
Nhập / Xuất dữ liệu
Các khối nối với nhau bằng mũi tên chỉ hướng luồng thực hiện — từ trên xuống hoặc từ trái sang phải.
Cách vẽ sơ đồ khối
Để vẽ sơ đồ khối đúng và dễ đọc, hãy làm theo quy trình sau:
Xác định bài toán — đầu vào, đầu ra và yêu cầu cần đạt.
Liệt kê các bước — viết thuật toán bằng lời trước khi vẽ.
Chọn ký hiệu phù hợp — thao tác, điều kiện, nhập/xuất.
Nối bằng mũi tên — thể hiện thứ tự và nhánh rẽ.
Kiểm tra lại — truy vết từng nhánh xem có đúng logic không.
📌 Ví dụ — Sơ đồ tìm số lớn hơn giữa a và b
⬭ Bắt đầu
↓
▱ Nhập a, b
↓
◇ a > b ?
↙ ↘
Đúng Sai
↓ ↓
▭ max=a ▭ max=b
↘ ↙
▱ In max
↓
⬭ Kết thúc
Liên hệ với Scratch và lập trình
Trong Scratch, mỗi loại khối lệnh tương ứng với một dạng luồng lệnh:
Ghép khối từ trên xuống → tuần tự
Khối "nếu … thì" → rẽ nhánh
Khối "lặp lại" hoặc "lặp vô hạn" → lặp
Thuật toán biến dữ liệu đầu vào thành kết quả có ý nghĩa
Trước khi kéo khối lệnh, hãy thử vẽ sơ đồ khối trên giấy. Thói quen này giúp bạn suy nghĩ kỹ hơn, tránh mắc lỗi logic và dễ sửa khi gặp vấn đề.
💡 Lời kết
Thuật toán là bản thiết kế, luồng lệnh là đường đi, sơ đồ khối là bản đồ. Hãy luyện tập vẽ sơ đồ cho các bài toán đời thường — từ nấu mì, sắp xếp sách, đến làm bài tập — để tư duy lập trình trở nên tự nhiên!